package edu.cque.jt.consumer.service;

import edu.cque.jt.consumer.service.factory.ProviderFallbackFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

/**
 * @author Hua
 * @create 2022-07-19 11:51
 * @FeignClient 注解描述的接口, 用于定义远程调用规范
 * name属性的值作为远端服务名
 * 同时也会将这个名字作为RemoteProviderService接口实现类的Bean对象的名字
 */
@FeignClient(value = "sca-provider",contextId = "remoteProviderService",fallbackFactory = ProviderFallbackFactory.class)//为服务提供者名称
public interface RemoteProviderService {

    /**
     * 基于此方法进行远端服务的调用
     * Feign接口是基于方法上的@GetMapping等注解中的value属性值,
     * 后续会基于这个值进行远端服务的方法调用
     *
     * @param msg
     * @return
     */
    @GetMapping("/provider/echo/{msg}")
//前提是 远端需要有这个服务
    String echoMsg(@PathVariable("msg") String msg);//指定msg参数,向上兼容,Feign规定
}
